package main

import (
	"github.com/gomodule/redigo/redis"
	"my_go_open/utils"
	"time"
)

func main() {
	rp, err := utils.RedisPool("redis://abc123@127.0.0.1:6379/1")
	if err != nil {
		utils.VarDump(err.Error())
		return
	}
	rc := rp.Get()
	defer rc.Close()
	rp1, _ := utils.RedisPool("redis_dev")
	rc1 := rp1.Get()
	defer rc1.Close()
	utils.VarDump(rp1.Stats())
	_, err = rc.Do("SET", "now", utils.TimeNowNice(), "EX", 3, "NX")
	if err != nil {
		utils.VarDump(err.Error())
		return
	}
	now, _ := redis.String(rc.Do("GET", "now"))
	utils.VarDump(now)
	if i, err := redis.Int64(rc.Do("GET", "key_not_exists")); err != nil {
		utils.VarDump(err.Error())
	} else {
		utils.VarDump(i)
	}

	// rate limit
	bln, err := utils.RedisRateLimit(rc, "test_rate", 5, time.Minute)
	utils.VarDump(bln)
	utils.VarDump(err)

	// set nx ex
	bln, err = utils.RedisSet(rc, "test_set", utils.TimeNowNice(), 3*time.Second, "NX")
	utils.VarDump(bln)
	utils.VarDump(err)

	// incr
	n, err := utils.RedisIncr(rc, "test_incr", 3)
	utils.VarDump(n)
	utils.VarDump(err)

	// del
	n, err = utils.RedisDel(rc, "now", "key_not_exists")
	utils.VarDump(n)
	utils.VarDump(err)

	// expire
	bln, err = utils.RedisExpire(rc, "test_incr", 10*time.Second)
	utils.VarDump(n)
	utils.VarDump(err)
}
